package io.gitee.gemini.utis;

import java.util.Objects;
import java.util.function.BiPredicate;

public class OperatorUtil {

    private OperatorUtil() {
    }


    /**
     * 封装三目运算符
     *
     * @param determinant 决定因素
     * @param arg1        决定因素正确时取值
     * @param arg2        决定因素错误时取值
     * @param <T>         参数类型
     * @return 三目运算结果
     */
    public static <T> T ternary(Boolean determinant, T arg1, T arg2) {
        Objects.requireNonNull(determinant);
        if (Boolean.TRUE.equals(determinant)) {
            return arg1;
        }
        return arg2;
    }

    /**
     * 三目运算符
     *
     * @param predicate 函数式接口
     * @param arg1      决定因素正确时取值
     * @param arg2      决定因素错误时取值
     * @param <T>       参数类型
     * @return 三目运算结果
     */
    public static <T> T ternary(BiPredicate<T, T> predicate, T arg1, T arg2) {
        Objects.requireNonNull(predicate);
        if (predicate.test(arg1, arg2)) {
            return arg1;
        }
        return arg2;
    }

}
